/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package muhnes.sizoo.controlador;

import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
import javax.faces.model.SelectItem;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import muhnes.sizoo.dal.ClaseDao;
import muhnes.sizoo.dal.ClaseDaoImpl;
import muhnes.sizoo.modelo.Clase;
import muhnes.sizoo.dal.OrdenDao;
import muhnes.sizoo.dal.OrdenDaoImpl;
import muhnes.sizoo.modelo.Orden;
/**
 *
 * @author Ricardo Orellana
 */
@ManagedBean(name = "ordenBean")
@ViewScoped
public class OrdenBean implements Serializable {
    
    private Orden orden;
    private List<Orden> listaOrden;
    private List< SelectItem > listaClase;
    
    public OrdenBean() {
        OrdenDao dao = new OrdenDaoImpl();
        orden = new Orden();
        listaOrden = dao.buscarTodos();
    }

    public Orden getOrden() {
        return orden;
    }

    public void setOrden(Orden orden) {
        this.orden = orden;
    }
    
    public List<Orden> getListaOrden() {
        if( listaOrden == null ) {
            OrdenDao dao = new OrdenDaoImpl();
            listaOrden = dao.buscarTodos();
        }
        return listaOrden;
    }

    public void setListaOrden(List<Orden> listaOrden) {
        this.listaOrden = listaOrden;
    }   
    
     public void prepararAdicion( ActionEvent event  ){
        orden = new Orden();
    }
    
    public void prepararModificacion( Orden orden ){
        this.orden = orden;
    }
    
    public void prepararEliminacion( Orden orden ){
        this.orden = orden;
    }
    
    public void agregarOrden( ActionEvent event ){
        OrdenDaoImpl dao = new OrdenDaoImpl();
        orden.setHabilitado( Boolean.TRUE );
        dao.guardar( orden );
        recrearLista();
    }
    
     public void actualizarOrden( ActionEvent event ){
        OrdenDaoImpl dao = new OrdenDaoImpl();
        dao.actualizar( orden );
        recrearLista();
    }
    
    public void eliminarOrden( ActionEvent event ){
        OrdenDaoImpl dao = new OrdenDaoImpl();
        dao.eliminar( orden );
        recrearLista();
    }
    
    
    public List< SelectItem > getListaClase() {
        if( listaClase == null ) {
            listaClase = new ArrayList< SelectItem >();
            ClaseDao dao = new ClaseDaoImpl();
            for( Clase clase : dao.buscarTodos() ) {
                SelectItem item = new SelectItem( clase, clase.getNombre() + " " + clase.getSubclase() + 
                        " " + clase.getInfraclase());
                listaClase.add( item );
            }
        }
        return listaClase;
    }
    
    void recrearLista() {
        listaOrden = null;
    }
    
}
